/*
 * File:   SimEVDiscardStrategy.h
 * Author: root
 *
 * Created on December 8, 2008, 5:06 PM
 */

#ifndef _SIMEVDISCARDSTRATEGY_H
#define	_SIMEVDISCARDSTRATEGY_H

#include "DiscardStrategy.h"

class SimEVDiscardStrategy : public DiscardStrategy {

  int decisionCertainty;
  int simulationRange;

protected:

    virtual void setExecutionParameter(int index, int rangeFraction) {
        simulationRange = rangeFraction;
    }

public:

    SimEVDiscardStrategy()
    : DiscardStrategy(string("SimEVDiscardStrategy"), 1), decisionCertainty(0), simulationRange(0)
    {
    }

    SimEVDiscardStrategy (int myWeight)
    : DiscardStrategy (myWeight), decisionCertainty(0), simulationRange(0)
    {
    }

    virtual int getDecisionCertainty() {
        return decisionCertainty;
    }

    virtual Strategy* getActiveInstance(int inst_weight) {
        return dynamic_cast<Strategy*>(new SimEVDiscardStrategy(inst_weight));
    }

    virtual void opponentMove ( int opponent, const Move& move ) {}
    virtual int pickDiscard (CCardStack*, bool, const GameState* );

};

#endif	/* _SIMEVDISCARDSTRATEGY_H */

